package com.ahorresas.controllers;

import com.ahorresas.modelo.daos.UsuarioDao;
import com.ahorresas.modelo.beans.UsuarioBean;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginController extends HttpServlet {
    private String usuario;
    private String clave;
    private UsuarioDao usuarioDao = new UsuarioDao();
    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        usuario = request.getParameter("usuario");
        clave = request.getParameter("clave");
        
        /*Control del boton accionado desde la página JSP*/
        String accion = request.getParameter("accion");
        if(accion == null)
            accion = "";
        String validacion = "";
        
        if(accion.equals("ingresar")){
            validacion = obligatorios();
            if(validacion.length() > 0){
                request.setAttribute("msg", validacion);
            } else {
                UsuarioBean usu = usuarioDao.buscarUsuario(usuario, true);
                if(usu == null){
                    usu = usuarioDao.buscarUsuario(validacion, false);
                }
                if(usu != null){
                    if(usu.getClave().equals(clave)){
                        request.getRequestDispatcher("./jsp/persona.jsp").forward(request, response);
                        return;
                    } else {
                        request.setAttribute("msg", "La clave para el usuario "+usuario+" es incorrecta.");
                    }
                } else {
                    request.setAttribute("msg", "El usuario "+usuario+" no se encuentra registrado en el sistema.");
                }
            }
        }
        mantenerDatos(request);
        request.getRequestDispatcher("./jsp/login.jsp").forward(request, response);
    }
    
    public String obligatorios(){
        StringBuilder resultado = new StringBuilder();
        if(usuario == null || usuario.equals(""))
            resultado.append("El campo 'Usuario' no debe estar vacío. <br>");
        if(clave == null || clave.equals(""))
            resultado.append("El campo 'Contraseña' no debe estar vacío. <br>");
        return resultado.toString();
    }
    
    public void mantenerDatos(HttpServletRequest request){
        request.setAttribute("usuario", usuario != null ? usuario : "");
        request.setAttribute("clave", clave != null ? clave : "");
    }

}
